home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / gawk / cawf2st.zoo / output.c < prev    next >
C/C++ Source or Header  |  1992-04-12  |  3KB  |  104 lines

  1. /*
  2.  *      output-c - output support functions for cawf(1)
  3.  */
  4.  
  5. /*
  6.  *      Copyright (c) 1991 Purdue University Research Foundation,
  7.  *      West Lafayette, Indiana 47907.  All rights reserved.
  8.  *
  9.  *      Written by Victor A. Abell <abe@mace.cc.purdue.edu>,  Purdue
  10.  *      University Computing Center.  Not derived from licensed software;
  11.  *      derived from awf(1) by Henry Spencer of the University of Toronto.
  12.  *
  13.  *      Permission is granted to anyone to use this software for any
  14.  *      purpose on any computer system, and to alter it and redistribute
  15.  *      it freely, subject to the following restrictions:
  16.  *
  17.  *      1. The author is not responsible for any consequences of use of
  18.  *         this software, even if they arise from flaws in it.
  19.  *
  20.  *      2. The origin of this software must not be misrepresented, either
  21.  *         by explicit claim or by omission.  Credits must appear in the
  22.  *         documentation.
  23.  *
  24.  *      3. Altered versions must be plainly marked as such, and must not
  25.  *         be misrepresented as being the original software.  Credits must
  26.  *         appear in the documentation.
  27.  *
  28.  *      4. This notice may not be removed or altered.
  29.  */
  30.  
  31. #include "cawf.h"
  32. #ifdef  UNIX
  33. #ifdef  USG
  34. #include <string.h>
  35. #else
  36. #include <strings.h>
  37. #endif
  38. #else
  39. #include <string.h>
  40. #endif
  41.  
  42.  
  43. /*
  44.  * LenprtHF(s, p, t) - get length of print header or footer with page number
  45.  *                     interpolation
  46.  */
  47.  
  48. LenprtHF(s, p, t)
  49.         char *s;                        /* header/footer string */
  50.         int p;                          /* page number */
  51.         int t;                          /* type: 0 = get interpolated length
  52.                                          *       1 = print */
  53. {
  54.         char buf[10];                   /* buffer for page number */
  55.         int len;                        /* line length */
  56.         char *s1;                       /* temporary string pointer */
  57.         
  58.         if (s == NULL)
  59.                 return(0);
  60.         for (len = 0; *s && *s != '%'; s++) {
  61.                 len++;
  62.                 if (t)
  63.                         Charput(*s);
  64.         }
  65.         if (*s) {
  66.                 (void) sprintf(buf, "%d", p);
  67.                 for (s1 = buf; *s1; s1++) {
  68.                         len++;
  69.                         if (t)
  70.                                 Charput(*s1);
  71.                 }
  72.                 for (s++; *s; s++) {
  73.                         len++;
  74.                         if (t)
  75.                                 Charput(*s);
  76.                 }
  77.         }
  78.         return(len);
  79. }
  80.  
  81.  
  82. /*
  83.  * Charput(s) - put a character to output, subject to diversion
  84.  */
  85.  
  86. Charput(c)
  87.         char c;                 /* character to put */
  88. {
  89.         if (Divert == 0)
  90.                 putchar(c);
  91. }
  92.  
  93.  
  94. /*
  95.  * Stringput(s) - put a string to output, subject to diversion
  96.  */
  97.  
  98. Stringput(s)
  99.         char *s;                /* string to put */
  100. {
  101.         if (Divert == 0)
  102.                 fputs(s, stdout);
  103. }
  104.